package Boke2;

public class Esi {
    //wait和notify方法的使用
    public static void main(String[] args) {
        Object o = new Object();
        Thread t1 = new Thread(){
            @Override
            public void run() {
                synchronized (o){//这个代表让当前线程竞争o这个对象的加锁状态。
                    try {
                        System.out.println(("等待开始"));
                        o.wait();
                        System.out.println(("等待结束"));
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        //线程1用来手动进入等待队列，让程序运行起来之后，线程1会直接进入等待队列
        Thread t2 = new Thread(){
            @Override
            public void run() {
                synchronized (o){//谁先执行这段代码谁就先把指定对象的加锁状态设置为true，谁就抢到了锁。
                    System.out.println(("notify开始"));
                    o.notify();
                    System.out.println(("notify结束"));
                }
            }
        };
        t1.start();
        t2.start();
    }
    //线程2用来提醒线程1条件达成，可以继续执行线程了。

}
